/*
 * @Author: Du Weixing duweixing@sgsimulation.com
 * @Date: 2024-10-15 14:14:53
 * @LastEditors: Du Weixing duweixing@sgsimulation.com
 * @LastEditTime: 2024-12-06 18:17:34
 * @FilePath: \SGFEM\Solver\SectionCalculator\BeamSection\FormulaMethod\Interface\IBeamSectionFormulaCalculator.h
 * @Description: PBEAML 梁标准截面属性使用解析公式计算接口
 * 
 * Copyright (c) 2024 by 神工仿真, All Rights Reserved. 
 */

#pragma once
#include <memory>
#include "DataStructure/Common/SGNamespace.h"
#include "DataStructure/Input/Property/PBEAMLData.h"
#include "DataStructure/Input/Property/PBEAMData.h"

SG_NAMESPACE_OPEN
namespace FEMSolver {
namespace Element {

/** \class IBeamSectionFormulaCalculator
 *  采用解析公式计算标准截面属性的基类
 */
class IBeamSectionFormulaCalculator
{
public:
    virtual ~IBeamSectionFormulaCalculator () = default;
    virtual SG::DataStructure::FEM::PBEAMData Compute (const SG::DataStructure::FEM::PBEAMLData& pBeamL) const = 0;
};

using BeamSectionFormulaCalculatorSP = std::shared_ptr<IBeamSectionFormulaCalculator>;

}; // end namespace Element
}; // end namespace FEMSolver
SG_NAMESPACE_CLOSE